/**
 * 
 */
package tp.pr5;

/**
 * @author Mario
 *
 */
public interface NavigationObserver {
	/**
	 * Notifies that the robot heading has changed
	 * @param newHeading
	 */
	void 	headingChanged(Direction newHeading);
	/**
	 * Notifies that the navigation module has been initialized
	 * @param initialPlace
	 * @param heading
	 */
	void 	initNavigationModule(PlaceInfo initialPlace, Direction heading);
	/**
	 * Notifies that the place where the robot stays has changed (because the robot picked or dropped an item)
	 * @param placeDescription
	 */
	void 	placeHasChanged(PlaceInfo placeDescription);
	/**
	 * Notifies that the user requested a RADAR instruction
	 * @param placeDescription
	 */
	void 	placeScanned(PlaceInfo placeDescription);
	/**
	 * Notifies that the robot has arrived at a place
	 * @param heading
	 * @param place
	 */
	void 	robotArrivesAtPlace(Direction heading, PlaceInfo place);
	/**
	 * Sets a Place as not visited (for undo instruction)
	 * @param lastPlace
	 */
	void unVisitPlace(PlaceInfo lastPlace);
	
}
